package com.wanmait.teatrain.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * <p>
 * 课程表
 * </p>
 *
 * @author wanmait
 * @since 2025-10-22
 */
@Data
@Accessors(chain = true)
public class Course {

    /**
     * 课程唯一 ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 课程名称（如 "新员工入职培训课"）
     */
    private String courseName;

    /**
     * 课程详细介绍
     */
    private String courseDesc;


    /**
     * 开放时长（单位：天，如 7 = 开放 7 天）
     */
    private Integer openDuration;

    /**
     * 开放开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")  // 用于接收参数
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")  // 用于返回 JSON
    private Date startTime;

    /**
     * 开放结束时间（自动计算：start_time+open_duration 天）
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")  // 用于接收参数
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")  // 用于返回 JSON
    private Date endTime;

    /**
     * 是否下架
     */
    private Boolean stop;

    /**
     * 课程创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")  // 用于接收参数
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")  // 用于返回 JSON
    private Date createTime;

    /**
     * 创建人
     */
    private Integer creatAdminId;

    /**
     * 课程最后更新时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")  // 用于接收参数
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")  // 用于返回 JSON
    private Date updateTime;

    /**
     * 数据有效性（1 = 启用，0 = 禁用）
     */
    private Boolean enable;

    @TableField(exist = false)
    private List<Integer> resourceIds;
}
